home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / plaf / basic / BasicDirectoryModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  4.2 KB  |  177 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.beans.PropertyChangeEvent;
  4. import java.beans.PropertyChangeListener;
  5. import java.io.File;
  6. import java.util.Vector;
  7. import javax.swing.AbstractListModel;
  8. import javax.swing.JFileChooser;
  9. import javax.swing.event.ListDataEvent;
  10.  
  11. public class BasicDirectoryModel extends AbstractListModel implements PropertyChangeListener {
  12.    private JFileChooser filechooser = null;
  13.    private Vector fileCache = null;
  14.    private LoadFilesThread loadThread = null;
  15.    private Vector files = null;
  16.    private Vector directories = null;
  17.    private int fetchID = 0;
  18.  
  19.    public BasicDirectoryModel(JFileChooser var1) {
  20.       this.filechooser = var1;
  21.       this.validateFileCache();
  22.    }
  23.  
  24.    // $FF: synthetic method
  25.    static JFileChooser access$0(BasicDirectoryModel var0) {
  26.       return var0.filechooser;
  27.    }
  28.  
  29.    // $FF: synthetic method
  30.    static int access$1(BasicDirectoryModel var0) {
  31.       return var0.fetchID;
  32.    }
  33.  
  34.    // $FF: synthetic method
  35.    static Vector access$2(BasicDirectoryModel var0) {
  36.       return var0.fileCache;
  37.    }
  38.  
  39.    public boolean contains(Object var1) {
  40.       return this.fileCache != null ? this.fileCache.contains(var1) : false;
  41.    }
  42.  
  43.    public void fireContentsChanged() {
  44.       this.files = null;
  45.       this.directories = null;
  46.       ((AbstractListModel)this).fireContentsChanged(this, 0, this.fileCache.size() - 1);
  47.    }
  48.  
  49.    public Vector getDirectories() {
  50.       if (this.directories != null) {
  51.          return this.directories;
  52.       } else {
  53.          Vector var1 = this.getFiles();
  54.          return this.directories;
  55.       }
  56.    }
  57.  
  58.    public Object getElementAt(int var1) {
  59.       return this.fileCache != null ? this.fileCache.elementAt(var1) : null;
  60.    }
  61.  
  62.    public Vector getFiles() {
  63.       if (this.files != null) {
  64.          return this.files;
  65.       } else {
  66.          this.files = new Vector();
  67.          this.directories = new Vector();
  68.          this.directories.addElement(this.filechooser.getFileSystemView().createFileObject(this.filechooser.getCurrentDirectory(), ".."));
  69.  
  70.          for(int var1 = 0; var1 < this.fileCache.size(); ++var1) {
  71.             File var2 = (File)this.fileCache.elementAt(var1);
  72.             if (this.filechooser.isTraversable(var2)) {
  73.                this.directories.addElement(var2);
  74.             } else {
  75.                this.files.addElement(var2);
  76.             }
  77.          }
  78.  
  79.          return this.files;
  80.       }
  81.    }
  82.  
  83.    public int getSize() {
  84.       return this.fileCache != null ? this.fileCache.size() : 0;
  85.    }
  86.  
  87.    public int indexOf(Object var1) {
  88.       return this.fileCache != null ? this.fileCache.indexOf(var1) : 0;
  89.    }
  90.  
  91.    public void intervalAdded(ListDataEvent var1) {
  92.    }
  93.  
  94.    public void intervalRemoved(ListDataEvent var1) {
  95.    }
  96.  
  97.    public void invalidateFileCache() {
  98.       this.files = null;
  99.       this.directories = null;
  100.       this.fileCache = null;
  101.    }
  102.  
  103.    // $FF: renamed from: lt (java.io.File, java.io.File) boolean
  104.    protected boolean method_0(File var1, File var2) {
  105.       return var1.getName().compareTo(var2.getName()) < 0;
  106.    }
  107.  
  108.    public void propertyChange(PropertyChangeEvent var1) {
  109.       String var2 = var1.getPropertyName();
  110.       if (var2 == "directoryChanged" || var2 == "fileViewChanged" || var2 == "fileFilterChanged" || var2 == "FileHidingChanged" || var2 == "fileSelectionChanged") {
  111.          this.invalidateFileCache();
  112.          this.validateFileCache();
  113.       }
  114.  
  115.    }
  116.  
  117.    private void quickSort(Vector var1, int var2, int var3) {
  118.       int var4 = var2;
  119.       int var5 = var3;
  120.       if (var3 > var2) {
  121.          File var6 = (File)var1.elementAt((var2 + var3) / 2);
  122.  
  123.          while(var4 <= var5) {
  124.             while(var4 < var3 && this.method_0((File)var1.elementAt(var4), var6)) {
  125.                ++var4;
  126.             }
  127.  
  128.             while(var5 > var2 && this.method_0(var6, (File)var1.elementAt(var5))) {
  129.                --var5;
  130.             }
  131.  
  132.             if (var4 <= var5) {
  133.                this.swap(var1, var4, var5);
  134.                ++var4;
  135.                --var5;
  136.             }
  137.          }
  138.  
  139.          if (var2 < var5) {
  140.             this.quickSort(var1, var2, var5);
  141.          }
  142.  
  143.          if (var4 < var3) {
  144.             this.quickSort(var1, var4, var3);
  145.          }
  146.       }
  147.  
  148.    }
  149.  
  150.    protected void sort(Vector var1) {
  151.       this.quickSort(var1, 0, var1.size() - 1);
  152.    }
  153.  
  154.    private void swap(Vector var1, int var2, int var3) {
  155.       Object var4 = var1.elementAt(var2);
  156.       var1.setElementAt(var1.elementAt(var3), var2);
  157.       var1.setElementAt(var4, var3);
  158.    }
  159.  
  160.    public void validateFileCache() {
  161.       File var1 = this.filechooser.getCurrentDirectory();
  162.       if (var1 == null) {
  163.          this.invalidateFileCache();
  164.       } else {
  165.          if (this.loadThread != null) {
  166.             this.loadThread.interrupt();
  167.          }
  168.  
  169.          ++this.fetchID;
  170.          this.invalidateFileCache();
  171.          this.fileCache = new Vector(50);
  172.          this.loadThread = new LoadFilesThread(this, var1, this.fetchID);
  173.          this.loadThread.start();
  174.       }
  175.    }
  176. }
  177.